{
  /*
    学习目标：字面量类型
    含义：能看到值的类型，就是字面量类型。
    使用场景： 经常和联合配合使用
    作用： 字面量类型+ 联合类型， 提供一组可选的取值范围
  */

  // 变量
  let str: string = 'hello 虎年';

  // 字面量类型：它能看到的值，就是它的类型
  const str2: 'hello 69' = 'hello 69';
  // const obj: {name: 'zs'} = {name: ''}

  // 用处 : 💥字面量往往配合联合类型一起使用

  // 需求 action中的type要求：'todo/add', 'todo/del'  , 'todo/udpate'
  type ActionType = { type: 'todo/add' | 'todo/del' | 'todo/update' };
  function dispatch(action: ActionType) {}

  dispatch({ type: 'todo/add' });
  dispatch({ type: 'todo/del' });

  // 需求
  type Action = { type: 'todo/add' } | { type: 'todo/des' } | { type: 'todo/update' };
  function reducer(state: any, action: Action) {
    switch (action.type) {
      case 'todo/add':
        break;

      case 'todo/des':
        break;
      case 'todo/update':
        break;
      default:
        break;
    }
  }
}
